package com.vinci.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import org.apache.tomcat.util.http.mapper.Mapper;

import com.vinci.beans.*;

public class EnseignantModel extends ModelDAO{

	Connection connection =null;
	ResultSet resultSet = null; 
	private ArrayList<Enseignant> allEnseignants = new ArrayList<Enseignant>();
	
	
	
	public int ajouterEnseignant(Enseignant enseignant){

		PreparedStatement prepStat = null;
		String laRequete = null;
		int valErreur = 0;

		try{
			connection = super.getConnection();
			laRequete = "INSERT INTO enseignant (HARPEGE, ID_TA, NOM, PRENOM, ADRESSE) VALUES(?,?,?,?,?)";
			prepStat = connection.prepareStatement(laRequete);


			prepStat.setString(1, enseignant.getHARPEGE());
			prepStat.setInt(2, enseignant.getID_TA());
			prepStat.setString(3, enseignant.getNOM());
			prepStat.setString(4, enseignant.getPRENOM());
			prepStat.setString(5, enseignant.getADRESSE());
			

			valErreur = prepStat.executeUpdate();

		}catch(Exception ex)
		{
			valErreur = 0;
			System.out.println("Erreur lors del'insertion d'un objet");
			ex.printStackTrace();
		}

		try{
			prepStat.close();
			connection.close();
		}catch(Exception ex){
			System.out.println("Impossible de fermer un objet");
			ex.printStackTrace();
		}

		return valErreur;
	}

	public Enseignant getEnseignant(String HARPEGE){
		PreparedStatement prepStat = null;
		Enseignant enseignant = null;
		String laRequete = null;

		try{
			connection = super.getConnection();
			laRequete = "SELECT * FROM enseignant WHERE HARPEGE=? ";
			prepStat =connection.prepareStatement(laRequete);
			prepStat.setString(1, HARPEGE);
			
			resultSet=prepStat.executeQuery();

			if (resultSet!=null){
				if (resultSet.next()){
					enseignant = mapperEnseignant(resultSet);

				}
			}else
				System.out.println("Enseignant introuvable dans la base");

		}catch(Exception ex){
			enseignant =null;
			System.out.println("erreur dans la requette" + ex);
		}

		try{
			resultSet.close();
			prepStat.close();
			connection.close();
		}catch(Exception ex){
			System.out.println("Impossible de fermer un objet");
			ex.printStackTrace();
		}

		return enseignant;
	}
	
	
public Enseignant mapperEnseignant(ResultSet resultSet){
		Enseignant enseignant = new Enseignant();

		try
		{
			if(resultSet.getString("HARPEGE")==null){
				enseignant.setHARPEGE("000A");
			}
			else
			{
				enseignant.setHARPEGE(resultSet.getString("HARPEGE"));
			}

			if(resultSet.getString("NOM")==null){
				enseignant.setNOM("Anonyme");
			}
			else
			{
				enseignant.setNOM(resultSet.getString("NOM"));
			}

			if(resultSet.getString("PRENOM")==null){
				enseignant.setPRENOM("AnonymeP");
			}
			else
			{
				enseignant.setPRENOM(resultSet.getString("PRENOM"));
			}
			if(resultSet.getString("ADRESSE")==null){
				enseignant.setADRESSE("Adresse null");
			}
			else
			{
				enseignant.setADRESSE(resultSet.getString("ADRESSE"));
			}

			if(resultSet.getInt("ID_TA")==0){
				enseignant.setID_TA(1);
			}
			else
			{
				enseignant.setID_TA(resultSet.getInt("ID_TA"));
			}

			if(resultSet.getInt("NB_H_SERVICE")==0){
				enseignant.setNB_H_SERVICE(0);
			}
			else
			{
				enseignant.setNB_H_SERVICE(resultSet.getInt("NB_H_SERVICE"));
			}


		}catch(Exception ex)
		{
			enseignant = null;
			System.out.println("Erreur lors du mapping des attributs"+ex);
		}
		return enseignant;
	}

	
	
	
	public ArrayList<Enseignant> getAllEnseignant(){
		PreparedStatement prepStat = null;
		Enseignant enseignant = null;
		String laRequete = null;

		try{
			connection = super.getConnection();
			laRequete = "SELECT * FROM enseignant";
			prepStat =connection.prepareStatement(laRequete);
			
			resultSet=prepStat.executeQuery();

			if (resultSet!=null){
				while (resultSet.next()){
					enseignant = mapperEnseignant(resultSet);
					allEnseignants.add(enseignant);
				}
			}else
				System.out.println("Aucun enseignant dans la base");

		}catch(Exception ex){
			enseignant =null;
			System.out.println("erreur dans la requette " + ex);
		}

		try{
			resultSet.close();
			prepStat.close();
			connection.close();
		}catch(Exception ex){
			System.out.println("Impossible de fermer un objet");
			ex.printStackTrace();
		}

		return allEnseignants;
	}	
	
	
}
